// 导入express 模块
const express = require("express");

const cookieParser = require("cookie-parser");

// 创建express的服务器实例
const app = express();

// 配置 cookieParser 解析中间件
app.use(cookieParser("itying")); // 使用一个密钥来加密 cookie

app.get("/", (req, res) => {
    // 设置 cookie 如果cookie没有过期，关闭浏览器后，cookie依然存在，不会销毁; 如果cookie没有过期，关闭浏览器后，cookie会销毁
    // res.cookie("username", "zhangsan", { maxAge: 1000*60*60 }); // 1小时后过期
    // res.cookie("username", "zhangsan", { maxAge: 1000*60*60, path: "/article" }); // 1小时后过期，且只在/article路径下有效

    // 多个域名（二级域名）共享 cookie aaa.itying.com 和 bbb.itying.com 共享 cookie
    // res.cookie("username", "zhangsan", { maxAge: 1000*60*60, domain: ".itying.com" }); // 1小时后过期，且在所有二级域名下都有效

    // 中文 cookie
    // res.cookie("username", "张三", { maxAge: 1000*60*60 });

    /*
        cookie 的加密
        1. 配置中间件的时候需要传入加密的参数 app.use(cookieParser("itying"));
        2. 在设置 cookie 的时候需要设置 signed 为 true  res.cookie("username", "zhangsan", { maxAge: 1000*60*60, signed: true })
        3. 读取 cookie 的时候需要使用 req.signedCookies 来读取加密
        4. 注意：如果设置了加密，cookie 的值不能是中文，否则会报错
    */
    res.cookie("username", "zhangsan", { maxAge: 1000*60*60, signed: true }); // 1小时后过期，且加密

    res.send("Hello, World!");
});

app.get("/article", (req, res) => {
    // 读取 cookie
    const username = req.cookies.username;
    console.log("Cookie username:", username);
    res.send("新闻页面--"+ username);
});

app.get("/user", (req, res) => {
    // 读取 cookie
    const username = req.cookies.username;
    console.log("Cookie username:", username);
    res.send("用户页面--"+ username);
});

app.get("/product", (req, res) => {
    // 读取加密的 cookie
    const username = req.signedCookies.username; // 使用 signedCookies 读取加密的 cookie
    console.log("Cookie username:", username);
    res.send("产品页面--"+ username);
});


// 调用app.listen方法，指定端口号并启动web服务器
app.listen(80, function() {
  console.log(`Express server running at http://127.0.0.1`);
});